第 6 章 网络应用 您所在的位置:网站首页 Debian ssh 第 6 章 网络应用

第 6 章 网络应用

2023-09-18 05:23| 来源: 网络整理| 查看: 265

6.2.4. 邮件传输代理 (MTA)

在 Debian 12 Bookworm 后,在没有 mail transfer agent (MTA) 程序的情况下,Debian 移动工作站可以基于 电子邮件客户端,配置为全功能的 GUI (图像用户界面)。

以往的 Debian 会安装某个 MTA 程序来支持期望 /usr/sbin/sendmail 命令的程序。移动工作站上这样的 MTA 必须和 第 6.2.2 节 “现代邮件服务限制” 第 6.2.3 节 “历史邮件服务端期望” 协同工作。

对于移动工作站,典型的 MTA 选择是 exim4-daemon-light 或 postfix,并选择类似这样的安装选项:“Mail sent by smarthost; received via SMTP or fetchmail”。这些是轻量 MTA 和 "/etc/aliases" 匹配。

提示

配置 exim4 来发送互联网邮件,多个源电子邮件地址使用多个相应的智能主机,这是不寻常的。如果一些程序需要这样的能力,使用 msmtp 来设置他们,它比较容易来设置多个源电子邮件地址。然后给主 MTA 仅仅保留单个电子邮件地址。

表 6.3. 基础的邮件传输代理相关的软件包列表

软件包 流行度 大小 说明 exim4-daemon-light V:233, I:244 1504 Exim4 邮件传输代理 (MTA : Debian 默认的) exim4-daemon-heavy V:6, I:7 1662 Exim4 邮件传输代理 (MTA : 灵活的替代品) exim4-base V:240, I:252 1672 Exim4 文档 (文本) 和通用文件 exim4-doc-html I:1 3748 Exim4 文档 (html) exim4-doc-info I:0 639 Exim4 文档 (info) postfix V:129, I:138 4024 Postfix 邮件传输代理 (MTA : 安全的替代品) postfix-doc I:7 4634 Postfix 文档 (html+text) sasl2-bin V:5, I:15 401 Cyrus SASL API 实现 (实现 postfix SMTP 认证) cyrus-sasl2-doc I:1 2175 Cyrus SASL - 文档 msmtp V:6, I:11 616 轻量 MTA msmtp-mta V:5, I:6 124 轻量 MTA (sendmail 兼容扩展到msmtp) esmtp V:0, I:0 129 轻量 MTA esmtp-run V:0, I:0 32 轻量 MTA(sendmail 兼容扩展到esmtp) nullmailer V:8, I:9 476 部分功能 MTA,没有本地邮件 ssmtp V:5, I:8 2 部分功能 MTA,没有本地邮件 sendmail-bin V:14, I:14 1877 全功能 MTA(如果你已经对它熟悉) courier-mta V:0, I:0 2390 全功能 MTA(web 接口等.) 6.2.4.1. exim4 的配置

对于那些通过 smarthost 的网络邮件,你应该按如下所示的 (重新) 配置 exim4-* 软件包。

$ sudo systemctl stop exim4 $ sudo dpkg-reconfigure exim4-config

配置 "General type of mail configuration" 时,选择 "mail sent by smarthost; received via SMTP or fetchmail"。

设置 "System mail name:" 为默认的 FQDN (参见第 5.1.1 节 “主机名解析”)。

设置 "IP-addresses to listen on for incoming SMTP connections:" 为默认的 "127.0.0.1; ::1"。

"Other destinations for which mail is accepted:" 选项留空。

"Machines to relay mail for:" 选项留空。

设置 "IP address or host name of the outgoing smarthost:" 为 "smtp.hostname.dom:587"。

设置 "Hide local mail name in outgoing mail?" 选项为 "NO"。(或者像第 6.2.4.3 节 “邮件地址配置”描述的那样使用 /etc/email-addresses" 代替)

选择如下所示的其中一个来回答 "Keep number of DNS-queries minimal (Dial-on-Demand)?"。

"No" 如果启动的时候,系统就连上了互联网。

"Yes" 如果启动的时候,系统没有连上互联网。

设置 "Delivery method for local mail:" 选项为 "mbox format in /var/mail/"。

"Split configuration into small files?:" 选项设为 "Yes"。

通过修改 "/etc/exim4/passwd.client" 文件,来创建用于 smarthost 的密码条目。

$ sudo vim /etc/exim4/passwd.client ... $ cat /etc/exim4/passwd.client ^smtp.*\.hostname\.dom:[email protected]:password

配置 exim4(8),在 "/etc/default/exim4" 文件中写入 "QUEUERUNNER='queueonly'","QUEUERUNNER='nodaemon'" 等等,来最小化系统资源使用。(可选的)

通过如下所示的启动 exim4。

$ sudo systemctl start exim4

"/etc/exim4/passwd.client" 文件中的主机名不应该是别名,你应该按如下所示的检查真正的主机名。

$ host smtp.hostname.dom smtp.hostname.dom is an alias for smtp99.hostname.dom. smtp99.hostname.dom has address 123.234.123.89

我在 "/etc/exim4/passwd.client" 文件中使用正则表达式来绕过别名问题。即使 ISP 更改了别名所指向的主机名,SMTP AUTH 还是可能工作的。

你能够通过如下所示的手动更新 exim4 配置:

更新 "/etc/exim4/" 目录下的 exim4 配置文件。

创建 "/etc/exim4/exim4.conf.localmacros" 来设置宏命令和修改 "/etc/exim4/exim4.conf.template" 文件。(没有分割的配置)

在 ”/etc/exim4/exim4.conf.d" 子目录中创建新文件或编辑已存在的文件。(分割的配置)

运行 "systemctl reload exim4".

小心

如果 debconf 询问 "Keep number of DNS-queries minimal (Dial-on-Demand)?" 这个问题时,选择 了 "No" (默认值),那么启动 exim4 会花很长时间并且系统在启动的时候不会连接到互联网。

请阅读 "/usr/share/doc/exim4-base/README.Debian.gz" 官方指导和 update-exim4.conf(8)。

警告

For all practical consideration, use SMTP with STARTTLS on port 587 or SMTPS (SMTP over SSL) on port 465, instead of plain SMTP on port 25.

6.2.4.2. 带有 SASL 的 postfix 配置

对于通过 smarthost 的网络邮件,你应该首先阅读 postfix 文档和关键的手册页。

表 6.4. 重要的 postfix 手册页列表

命令 功能 postfix(1) Postfix 控制程序 postconf(1) Postfix 配置工具 postconf(5) Postfix 配置参数 postmap(1) Postfix 查找表维护 postalias(1) Postfix 别名数据库维护

你应该按如下所示的 (重新) 配置 postfix 和 sasl2-bin 软件包。

$ sudo systemctl stop postfix $ sudo dpkg-reconfigure postfix

选择 "Internet with smarthost"。

设置 "SMTP relay host (blank for none):" 为 "[smtp.hostname.dom]:587" 并按如下所示配置。

$ sudo postconf -e 'smtp_sender_dependent_authentication = yes' $ sudo postconf -e 'smtp_sasl_auth_enable = yes' $ sudo postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd' $ sudo postconf -e 'smtp_sasl_type = cyrus' $ sudo vim /etc/postfix/sasl_passwd

为 smarthost 创建密码条目。

$ cat /etc/postfix/sasl_passwd [smtp.hostname.dom]:587 username:password $ sudo postmap hush:/etc/postfix/sasl_passwd

通过如下所示的启动 postfix。

$ sudo systemctl start postfix

dpkg-reconfigure 会话中使用的 "[" 和 "]" 和 "/etc/postfix/sasl_passwd" 确保不去检查 MX 记录而是直接使用指定的明确主机名。参见 "/usr/share/doc/postfix/html/SASL_README.html" 里面的 "Enabling SASL authentication in the Postfix SMTP client" 条目。

6.2.4.3. 邮件地址配置

这里有一些用于邮件传输、投递和用户代理的邮件地址配置文件。

表 6.5. 与邮件地址相关的配置文件列表

文件 功能 应用 /etc/mailname 用于 (外发) 邮件的默认主机名 Debian 专用的,mailname(5) /etc/email-addresses 用于外发邮件的主机名伪装 exim(8) 专用的,exim4-config_files(5) /etc/postfix/generic 用于外发邮件的主机名伪装 postfix(1) 专用的,postmap(1) 命令执行后激活。 /etc/aliases 用于接收邮件的账户别名 通用的,newaliases(1) 命令执行后激活。

"/etc/mailname" 文件中的 mailname 通常是全称域名 (FQDN),这个全程域名将会被解析成主机的 IP 地址。对于没有可解析成 IP 地址的主机名的移动工作站,设置 mailname 为 "hostname -f" 的值。(这对于 exim4-* 和 postfix 都是安全有效的选择。)

提示

"/etc/mailname" 中的内容被许多非 MTA 程序用作它们的默认行为。对于 mutt, 在~/muttrc 文件中设置 "hostname" 和 "from" 变量来覆盖 mailname 值。对于 devscripts 软件包的程序,例如 bts(1) 和 dch(1),导出环境变量 "$DEBFULLNAME" 和 "$DEBEMAIL" 的值来覆盖它。

提示

popularity-contest 软件包一般以 FQDN 形式的 root 账户发送邮件。你需要像 /usr/share/popularity-contest/default.conf 文件中描述的那样去设置 /etc/popularity-contest.conf 文件中的 MAILFROM 值。否则,你的邮件会被 smarthost SMTP 服务器拒绝。尽管这些过程很乏味,这种方法比为所有通过 MTA 并且是以 root 用户发送的邮件重写源地址更安全。这也可以被其他守护进程或者是 cron 脚本使用。

当设置 mailname 为 "hostname -f" 的值时,通过 MTA 的源邮件地址的伪装可以通过如下所示的来实现。

用于 exim4(8) 的 "/etc/email-addresses" 文件,exim4-config_files(5) 手册页中有关于它的解释

用于 postfix(1) 的 "/etc/postfix/generic" 文件,generic(5) 手册页中有关于它的解释

对于 postfix,接下来的额外步骤需要执行。

# postmap hash:/etc/postfix/generic # postconf -e 'smtp_generic_maps = hash:/etc/postfix/generic' # postfix reload

你能够通过如下所示的来测试邮件地址配置。

exim(8) 用 -brw, -bf, -bF, -bV, ... 选项

postmap(1) 用 -q 选项。

提示

Exim 带有一些有用的程序,例如 exiqgrep(8) 和 exipick(8)。参见 "dpkg -L exim4-base|grep man8/" 来获得可用的命令。

6.2.4.4. 基础 MTA 操作

这里有一些基础的 MTA 操作。有一些可能会通过 sendmail(1) 的兼容性接口来实现。

表 6.6. 基础 MTA 操作列表

exim 命令 postfix 命令 说明 sendmail sendmail 从标准输入读取邮件并且安排投递 (-bm) mailq mailq 列出带有状态和队列 ID 的邮件队列 (-bq) newaliases newaliases 初始化别名数据库 (-I) exim4 -q postqueue -f 刷新等待邮件 (-q) exim4 -qf postsuper -r ALL deferred; postqueue -f 刷新所有邮件 exim4 -qff postsuper -r ALL; postqueue -f 刷新甚至已经冻结的邮件 exim4 -Mg queue_id postsuper -h queue_id 通过邮件的队列 ID 来冻结它 exim4 -Mrm queue_id postsuper -d queue_id 通过邮件的队列 ID 来移除它 N/A postsuper -d ALL 移除所有邮件 提示

往 "/etc/ppp/ip-up.d/*" 里写一个刷新所有邮件的脚本会是个不错的主意。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有